module binarization
#(
    parameter threshold = 118
)
(
    //module clock
    input               clk             ,   // 时钟信号
    input               rst_n           ,   // 复位信号（低有效）

    //图像处理前的数据接口
    input               per_img_vsync    ,   // vsync信号
    input               per_img_href     ,   // hsync信号
    input               per_img_de       ,   // data enable信号
    input   [7:0]       per_img_gray     ,

    //图像处理后的数据接口
    output              post_img_vsync  ,   // vsync信号
    output              post_img_href   ,   // hsync信号
    output              post_de         ,   // data enable信号
    output       [7:0]  post_img_data        // monochrome（1=白，0=黑）
);

//reg define
reg    ycbcr_vsync_d;
reg    ycbcr_hsync_d;
reg    ycbcr_de_d   ;
reg    post_img_bit;

//*****************************************************
//**                    main code
//*****************************************************

assign  post_img_vsync   = ycbcr_vsync_d  ;
assign  post_img_href    = ycbcr_hsync_d  ;
assign  post_de          = ycbcr_de_d     ;
assign  post_img_data    = {8{post_img_bit}};

//二值化
always @(posedge clk or negedge rst_n) begin
    if(!rst_n)
        post_img_bit <= 1'b0;
    else if(per_img_gray > threshold)  //阈值
        post_img_bit <= 1'b1;
    else
        post_img_bit <= 1'b0;
end

//延时1拍以同步时钟信号
always@(posedge clk or negedge rst_n) begin
    if(!rst_n) begin
        ycbcr_vsync_d <= 1'd0;
        ycbcr_hsync_d <= 1'd0;
        ycbcr_de_d    <= 1'd0;
    end
    else begin
        ycbcr_vsync_d <= per_img_vsync   ;
        ycbcr_hsync_d <= per_img_href    ;
        ycbcr_de_d    <= per_img_de   ;
    end
end

endmodule 